if (!jsx3.lang.Class.forName("ux.megatron.example.tour.panel.TestPanel")) {

  jsx3.Class.defineClass("ux.megatron.example.tour.panel.TestPanel", 
    jsx3.lang.Object, 
    [ux.megatron.plugin.PluginInterface], 
    function(plugin){
  
    plugin.instance = null;
    
    plugin.getInstance = function(args){
      if (!this.instance) {
        this.instance = new plugin();
      }
      return this.instance;
    }
    
    plugin.prototype.getTabText = function(){
      return ux.megatron.Main.getServer().getDynamicProperty("@@tour@TestPanelTabText");
    }
    
    plugin.prototype.getNamespace = function(){
      return "ux.megatron.example.tour";
    }
    
    plugin.prototype.getComponentUIPath = function(){
      return "ux/megatron/example/tour/panel/ui/TestPanelPage.xml";
    }
    
    plugin.prototype.getUIResources = function(){
      return null;
    }
    
    plugin.prototype.loadComponent = function(parent){
      ux.megatron.Main.loadUIResourceAsync(parent, this.getNamespace(), this.getComponentUIPath(), this, this.componentLoaded);
    }
    
    plugin.prototype.componentLoaded = function(objEvent){
      if (objEvent.status == "SUCCESS") {
        // TODO: put code what you want do after below.
      }
      else {
        if (objEvent.exception) {
          ux.megatron.Main.logException(objEvent.exception, objEvent.message);
        }
        else {
          jsx3.log(objEvent.message);
        }
      }
    }
    
    
  });
  
};
